C++ Return by Reference

03-11-17 Course- CPP

In C++ Programming, you may pass values by reference but also you can return a value by reference.  To understand this feature, you should have good knowledge of global variables. If a variable is defined outside every function, then that variable is called a global variable. Any part of program after global variable declaration can access global variable. Learn more about global variables. Consider this example:

Example 1: Return by Reference


#include <iostream>
using namespace std;
int n;
int& test();

int main() {
    test() = 5;
    cout<<n;
    return 0;
}

int& test() {
    return n;
}

Output


5

Explanation

In program above, the return type of function test() is int&. Hence this function returns by reference. The return statement is return n; but unlike return by value. This statement doesn't return value of n, instead it returns variable n itself.

Then the variable n is assigned to the left side of code test() = 5; and value of n is displayed.

Important Things to Care While Returning by Reference.


int& test() { 
    int n = 2; 
    return n; 
}
  • Ordinary function returns value but this function doesn't. Hence, you can't return constant from this function.
    
    int& test() {
        return 2;
    }
  • You can't return a local variable from this function.